
package cn.com.bod.fas.cim.controller;

import cn.com.bod.fas.cim.model.vo.DmBaseInfoVo;
import cn.com.bod.fas.cim.model.vo.request.DmCorporationIndvRequVo;
import cn.com.bod.fas.cim.model.vo.response.DmDealerInfoRespVo;
import cn.com.bod.fas.cim.service.DmBaseInfoService;
import cn.com.bod.fas.common.utils.ResultUtil;
import cn.com.yusys.yusp.commons.mapper.QueryModel;
import cn.com.yusys.yusp.commons.web.rest.dto.ResultDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.net.URISyntaxException;
import java.util.List;

/**
 * @author zbb
 * @version 1.0.0
 * @description 经销商基本信息接口类
 * @date 2019年9月16日 14:29:07
 * @Copyright (c) scfhdt
 */
@Api(tags = ("经销商接口"))
@RestController
@RequestMapping("/api/dm/dealerInfo")
public class DmBaseInfoController {
    @Autowired
    private DmBaseInfoService dmBaseInfoService;
    @Autowired
    private ResultUtil resultUtil;

    /**
     * @description 获得经销商列表(不分页)
     * @author zbb
     * @date 2019年9月26日 23:39
     * @param
     * @return cn.com.yusys.yusp.commons.web.rest.dto.ResultDto<java.util.List < cn.com.scfhdt.dealer.model.vo.response.DmDealerInfoRespVo>>
     */
    @ApiOperation(value = "获得经销商列表(不分页)", notes = "获得经销商列表(不分页)")
    @GetMapping("/dealerQueryAll")
    protected ResultDto<List<DmDealerInfoRespVo>> dealerQueryAll() {
        QueryModel queryModel = new QueryModel();
        List<DmDealerInfoRespVo> listResultDto = dmBaseInfoService.selectAll(queryModel);
        return resultUtil.success(listResultDto);
    }

    /**
     * @description 获得经销商列表(分页)
     * @author zbb
     * @date 2019年9月25日 9:39
     * @param queryModel
     * @return cn.com.yusys.yusp.commons.web.rest.dto.ResultDto<java.util.List < cn.com.scfhdt.dealer.model.vo.DmBaseInfoVo>>
     */
    @ApiOperation(value = "获得经销商列表(分页)", notes = "获得经销商列表(分页)")
    @GetMapping("/dealerPage")
    protected ResultDto<List<DmBaseInfoVo>> getPage(QueryModel queryModel) {

        List<DmBaseInfoVo> list = dmBaseInfoService.selectByModel(queryModel);
        return resultUtil.success(list);
    }

    /**
     * @description 获得经销商详情
     * @author zbb
     * @date 2019年9月26日 19:38
     * @param dealerNo, dealerType
     * @return cn.com.yusys.yusp.commons.web.rest.dto.ResultDto
     */
    @ApiOperation(value = "获得经销商详情", notes = "获得经销商详情")
    @GetMapping("/dealerNoQuary")
    protected ResultDto dealerNoQuary( @ApiParam("经销商编号") @NotBlank String dealerNo,@ApiParam("经销商类型") @NotBlank String dealerTypeId) {

        ResultDto dmBaseInfo = dmBaseInfoService.selectDealerInfo(dealerNo, dealerTypeId);
        return dmBaseInfo;
    }

    /**
     * @description 经销商新增和修改
     * @author zbb
     * @date 2019年9月26日 19:38
     * @param dmCorporationIndvRequVo
     * @return cn.com.yusys.yusp.commons.web.rest.dto.ResultDto<java.lang.Void>
     */
    @ApiOperation(value = "经销商新增和修改", notes = "经销商新增和修改")
    @PostMapping("/addAndUpdateDeraler")
    protected ResultDto<Void> addAndUpdateDeraler(@RequestBody @Valid DmCorporationIndvRequVo dmCorporationIndvRequVo) throws URISyntaxException {

        dmBaseInfoService.addAndUpdate(dmCorporationIndvRequVo);
        return resultUtil.success();
    }

    /**
     * @description 经销商删除
     * @author zbb
     * @date 2019年9月26日 19:35
     * @param dealerNo 经销商编号
     * @return cn.com.yusys.yusp.commons.web.rest.dto.ResultDto<java.lang.Void>
     */
    @ApiOperation(value = "经销商删除", notes = "经销商删除")
    @GetMapping("/dealerNoDelete")
    protected ResultDto<Void> dealerNoDelete(@ApiParam("经销商编号") @NotBlank String dealerNo) {

        dmBaseInfoService.deleteByPrimaryKey(dealerNo);
        return resultUtil.success();
    }

}
